home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / Projects / Stretching the Mind / Symbol Stretching < prev    next >
Lisp/Scheme  |  1997-06-05  |  851b  |  26 lines

  1. (defun symbol-stretch (symbols frames)
  2.    (cond ((greaterp (length symbols) frames)
  3.           (symbol-trim frames symbols))
  4.          (t (frame-expand symbols frames))))
  5.  
  6. (defun frame-expand (symbols frames)
  7.    (prog (out gap count abs-frame prev-frame)
  8.       (setq gap (quotient (float frames) (length symbols)))
  9.       (setq count 1)
  10.       (setq prev-frame 0)
  11.       loop
  12.          (cond ((null symbols) (return out)))
  13.          (setq abs-frame (round (times count gap)))
  14.          (setq out (append out
  15.                            (cons-n (car symbols)
  16.                                    (difference abs-frame prev-frame))))
  17.          (setq prev-frame abs-frame)
  18.          (setq count (add1 count))
  19.          (setq symbols (cdr symbols))
  20.          (go loop)))
  21.  
  22. ; stretches symbols to a given length
  23.  
  24. (symbol-stretch '(a b c) 12)
  25. --> (a a a a b b b b c c c c)
  26.